鱼C论坛

 找回密码
 立即注册
查看: 834|回复: 0

[技术交流] 个人笔记1-论如何取出一个数字二进制形态的第几位数值。

[复制链接]
发表于 2020-5-7 17:12:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一个数字在计算机中是以二进制存储的,比如整数int a = 12; 存储的形态便是0000 1100。

需要注意的是存储时是从右到左的,所以说取值的时候也是从右到左。(左边是高位,右边是低位)

问题一:如何才能取到处于第一位的数值(标黄位置),0000 1100

可以使用:printf("%d\n", a & 1);
其中&1就是取一位二进制的值。


问题二:如何才能取到第三个位置的数值(标黄位置),0000 1100.

可以使用:printf("%d\n", a >>2 & 1);
其中 >>3代表向右移两位,&1就是取一位的二进制的值。


拓展:
1、移位操作
<<,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。
如:数字1111 0000,左移两位后变成1100 0000
>>,有符号右移位,将运算数的二进制整体右移指定位数,整数高位用0补齐,负数高位用1补齐(保持负数符号不变)。
如:数字1100 1100,右移两位后变成1111 0011

2、按位与&操作
作用为取一个数中某些指定位,
比如如果你想取最低位0000 1100,那么&1就可。 1标识成二进制 0000 0001
比如如果你想取后四位0000 1100,那么&0x0f即可。  0x0f表示成二进制 0000 1111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-29 02:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表