记一个移位函数功能

#include<stdio.h>
#include <assert.h>

int xrec_ctl_size(int num);

int main(void)
{
int i = 0;
for(i = 1;i < 255;i++)
{
printf("i=%d,ctl_size=%d\n",i,xrec_ctl_size(i));
}
return 0;
}
int xrec_ctl_size(int num)
{
assert(num > 0);
return ((num - 1) >> 3) + 1;
}
先看这个函数的返回结果


i=1,ctl_size=1
i=2,ctl_size=1
i=3,ctl_size=1
i=4,ctl_size=1
i=5,ctl_size=1
i=6,ctl_size=1
i=7,ctl_size=1
i=8,ctl_size=1
i=9,ctl_size=2
i=10,ctl_size=2
i=11,ctl_size=2
i=12,ctl_size=2
i=13,ctl_size=2
i=14,ctl_size=2
i=15,ctl_size=2
i=16,ctl_size=2
i=17,ctl_size=3
i=18,ctl_size=3
i=19,ctl_size=3
i=20,ctl_size=3
i=21,ctl_size=3
i=22,ctl_size=3
i=23,ctl_size=3
i=24,ctl_size=3
i=25,ctl_size=4
i=26,ctl_size=4
i=27,ctl_size=4
i=28,ctl_size=4
i=29,ctl_size=4
i=30,ctl_size=4
i=31,ctl_size=4
i=32,ctl_size=4
i=33,ctl_size=5
i=34,ctl_size=5
i=35,ctl_size=5
i=36,ctl_size=5
i=37,ctl_size=5
i=38,ctl_size=5
i=39,ctl_size=5
i=40,ctl_size=5
i=41,ctl_size=6
i=42,ctl_size=6
i=43,ctl_size=6
i=44,ctl_size=6
i=45,ctl_size=6
i=46,ctl_size=6
i=47,ctl_size=6
i=48,ctl_size=6
i=49,ctl_size=7
i=50,ctl_size=7
i=51,ctl_size=7
i=52,ctl_size=7
i=53,ctl_size=7
i=54,ctl_size=7
i=55,ctl_size=7
i=56,ctl_size=7
i=57,ctl_size=8
i=58,ctl_size=8
i=59,ctl_size=8
i=60,ctl_size=8
i=61,ctl_size=8
i=62,ctl_size=8
i=63,ctl_size=8
i=64,ctl_size=8
i=65,ctl_size=9
i=66,ctl_size=9
i=67,ctl_size=9
i=68,ctl_size=9
i=69,ctl_size=9
i=70,ctl_size=9
i=71,ctl_size=9
i=72,ctl_size=9
i=73,ctl_size=10
i=74,ctl_size=10
i=75,ctl_size=10
i=76,ctl_size=10
i=77,ctl_size=10
i=78,ctl_size=10
i=79,ctl_size=10
i=80,ctl_size=10
i=81,ctl_size=11
i=82,ctl_size=11
i=83,ctl_size=11
i=84,ctl_size=11
i=85,ctl_size=11
i=86,ctl_size=11
i=87,ctl_size=11
i=88,ctl_size=11
i=89,ctl_size=12
i=90,ctl_size=12
i=91,ctl_size=12
i=92,ctl_size=12
i=93,ctl_size=12
i=94,ctl_size=12
i=95,ctl_size=12
i=96,ctl_size=12
i=97,ctl_size=13
i=98,ctl_size=13
i=99,ctl_size=13
i=100,ctl_size=13
i=101,ctl_size=13
i=102,ctl_size=13
i=103,ctl_size=13
i=104,ctl_size=13
i=105,ctl_size=14
i=106,ctl_size=14
i=107,ctl_size=14
i=108,ctl_size=14
i=109,ctl_size=14
i=110,ctl_size=14
i=111,ctl_size=14
i=112,ctl_size=14
i=113,ctl_size=15
i=114,ctl_size=15
i=115,ctl_size=15
i=116,ctl_size=15
i=117,ctl_size=15
i=118,ctl_size=15
i=119,ctl_size=15
i=120,ctl_size=15
i=121,ctl_size=16
i=122,ctl_size=16
i=123,ctl_size=16
i=124,ctl_size=16
i=125,ctl_size=16
i=126,ctl_size=16
i=127,ctl_size=16
i=128,ctl_size=16
i=129,ctl_size=17
i=130,ctl_size=17
i=131,ctl_size=17
i=132,ctl_size=17
i=133,ctl_size=17
i=134,ctl_size=17
i=135,ctl_size=17
i=136,ctl_size=17
i=137,ctl_size=18
i=138,ctl_size=18
i=139,ctl_size=18
i=140,ctl_size=18
i=141,ctl_size=18
i=142,ctl_size=18
i=143,ctl_size=18
i=144,ctl_size=18
i=145,ctl_size=19
i=146,ctl_size=19
i=147,ctl_size=19
i=148,ctl_size=19
i=149,ctl_size=19
i=150,ctl_size=19
i=151,ctl_size=19
i=152,ctl_size=19
i=153,ctl_size=20
i=154,ctl_size=20
i=155,ctl_size=20
i=156,ctl_size=20
i=157,ctl_size=20
i=158,ctl_size=20
i=159,ctl_size=20
i=160,ctl_size=20
i=161,ctl_size=21
i=162,ctl_size=21
i=163,ctl_size=21
i=164,ctl_size=21
i=165,ctl_size=21
i=166,ctl_size=21
i=167,ctl_size=21
i=168,ctl_size=21
i=169,ctl_size=22
i=170,ctl_size=22
i=171,ctl_size=22
i=172,ctl_size=22
i=173,ctl_size=22
i=174,ctl_size=22
i=175,ctl_size=22
i=176,ctl_size=22
i=177,ctl_size=23
i=178,ctl_size=23
i=179,ctl_size=23
i=180,ctl_size=23
i=181,ctl_size=23
i=182,ctl_size=23
i=183,ctl_size=23
i=184,ctl_size=23
i=185,ctl_size=24
i=186,ctl_size=24
i=187,ctl_size=24
i=188,ctl_size=24
i=189,ctl_size=24
i=190,ctl_size=24
i=191,ctl_size=24
i=192,ctl_size=24
i=193,ctl_size=25
i=194,ctl_size=25
i=195,ctl_size=25
i=196,ctl_size=25
i=197,ctl_size=25
i=198,ctl_size=25
i=199,ctl_size=25
i=200,ctl_size=25
i=201,ctl_size=26
i=202,ctl_size=26
i=203,ctl_size=26
i=204,ctl_size=26
i=205,ctl_size=26
i=206,ctl_size=26
i=207,ctl_size=26
i=208,ctl_size=26
i=209,ctl_size=27
i=210,ctl_size=27
i=211,ctl_size=27
i=212,ctl_size=27
i=213,ctl_size=27
i=214,ctl_size=27
i=215,ctl_size=27
i=216,ctl_size=27
i=217,ctl_size=28
i=218,ctl_size=28
i=219,ctl_size=28
i=220,ctl_size=28
i=221,ctl_size=28
i=222,ctl_size=28
i=223,ctl_size=28
i=224,ctl_size=28
i=225,ctl_size=29
i=226,ctl_size=29
i=227,ctl_size=29
i=228,ctl_size=29
i=229,ctl_size=29
i=230,ctl_size=29
i=231,ctl_size=29
i=232,ctl_size=29
i=233,ctl_size=30
i=234,ctl_size=30
i=235,ctl_size=30
i=236,ctl_size=30
i=237,ctl_size=30
i=238,ctl_size=30
i=239,ctl_size=30
i=240,ctl_size=30
i=241,ctl_size=31
i=242,ctl_size=31
i=243,ctl_size=31
i=244,ctl_size=31
i=245,ctl_size=31
i=246,ctl_size=31
i=247,ctl_size=31
i=248,ctl_size=31
i=249,ctl_size=32
i=250,ctl_size=32
i=251,ctl_size=32
i=252,ctl_size=32
i=253,ctl_size=32
i=254,ctl_size=32

通过结果来看,就是将数值除以8得到的一个数值,
然后再看这个值,tem_len就是上面得到的值,然后这里作为memset的第三个参数,表示为初始化该地址的字节大小,也就是上面的值表示的入参有多少个字节,等到读取的时候读到多少个位,就表示入参的值为多少,可以用来做位图需要申请多少个字节计算方式,主要的功能就是表示,num个位需要多少个字节。
memset(pdata, 0xFF, tmp_len);
总结:所以一个实现需要在具体的使用中展示这个函数的意义和功能,就像我们生活中的事物,需要被使用才能显示出价值。
今天本来的主题是MIPS架构存在必须要求字节对齐的一个测例,可是测例并没有构造出这个场景,但是在运行的系统中存在这个问题,这个问题还需要我重现之后进行详细的介绍,同时也给自己在以后的工作中总结一点经验

posted @ 2022-10-20 00:12  交响曲  阅读(26)  评论(0编辑  收藏  举报