用win32控制台取一个整数a从右端开始的4~7位。c/c++
答案:1 悬赏:20 手机版
解决时间 2021-03-05 17:20
- 提问者网友:两耳就是菩提
- 2021-03-05 07:47
用win32控制台取一个整数a从右端开始的4~7位。c/c++
最佳答案
- 五星知识达人网友:刀戟声无边
- 2021-03-05 08:03
从实现上来说直接 int a = 123456789 / 1000;这样就可以实现
就LZ的程序分析说一下,感觉有些问题,下面的操作是针对2进制的,比如说1234567,按照下面的思路是取不到1234的
(1)先使a右移4位。 //把a的2进制表示右移4位,也就是0123位移除,现在的4567位就在低4位了
(2)设置一个低4位全为1,其余全为0的数。可用~(~0 < <4) //此数如0x0000000f,这就是一个低四位全1其他全0的数
(3)将上面二者进行&运算。//&操作后,低四位值不变,其他位置上的数字全部被清0
举例:a = 1234567,他的2进制值为100101101011010000111
(1)右移4位也就是a>>4,a=00001001011010110100
(2)设置个低4位为1其他为0的数b=0x0000000f()也就是00000000000000001111
(3)a&b = (前面按位与后都为0)0100也就是4
最后结果就是4
就LZ的程序分析说一下,感觉有些问题,下面的操作是针对2进制的,比如说1234567,按照下面的思路是取不到1234的
(1)先使a右移4位。 //把a的2进制表示右移4位,也就是0123位移除,现在的4567位就在低4位了
(2)设置一个低4位全为1,其余全为0的数。可用~(~0 < <4) //此数如0x0000000f,这就是一个低四位全1其他全0的数
(3)将上面二者进行&运算。//&操作后,低四位值不变,其他位置上的数字全部被清0
举例:a = 1234567,他的2进制值为100101101011010000111
(1)右移4位也就是a>>4,a=00001001011010110100
(2)设置个低4位为1其他为0的数b=0x0000000f()也就是00000000000000001111
(3)a&b = (前面按位与后都为0)0100也就是4
最后结果就是4
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯